// pages/draw/draw.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    animationClass: '',
    drawType: 'normal', // 'normal' 或 'bonus'
    animationTimer: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      drawType: options.type || 'normal'
    });
    
    // 开始动画流程
    this.startAnimationSequence();
  },

  /**
   * 开始动画序列
   */
  startAnimationSequence: function() {
    const speedFactor = this.data.drawType === 'bonus' ? 0.8 : 1;
    
    // 第一次摇晃
    setTimeout(() => {
      this.setData({ animationClass: 'shake' });
      
      // 第二次摇晃
      setTimeout(() => {
        this.setData({ animationClass: 'shake-again' });
        
        // 光晕闪现
        setTimeout(() => {
          this.setData({ animationClass: 'glow' });
          
          // 卡片上浮
          setTimeout(() => {
            this.setData({ animationClass: 'float-up' });
            
            // 跳转到结果页
            setTimeout(() => {
              this.navigateToResult();
            }, 300 * speedFactor);
          }, 300 * speedFactor);
        }, 400 * speedFactor);
      }, 400 * speedFactor);
    }, 100);
  },

  /**
   * 跳过动画
   */
  skipAnimation: function() {
    // 清除所有定时器
    if (this.data.animationTimer) {
      clearTimeout(this.data.animationTimer);
    }
    
    // 直接跳转到结果页
    this.navigateToResult();
  },

  /**
   * 跳转到结果页
   */
  navigateToResult: async function() {
    const app = getApp();
    
    try {
      // 显示加载提示
      wx.showLoading({ title: '准备礼物中...' });
      
      let result = null;
      
      // 根据抽奖类型调用不同的API
      if (this.data.drawType === 'normal') {
        // 普通抽奖
        result = await app.recordDraw();
      } else {
        // 额外抽奖
        result = await app.useBonusDraw();
      }
      
      // 隐藏加载提示
      wx.hideLoading();
      
      if (result) {
        // 设置结果类型
        app.globalData.drawResultType = result.type;
        
        // 跳转到结果页
        wx.navigateTo({
          url: `../result/result?historyId=${result.id}`
        });
      } else {
        // 如果没有获取到结果，显示错误提示并返回首页
        wx.showToast({
          title: '获取礼物失败，请重试',
          icon: 'none'
        });
        
        // 延迟返回首页
        setTimeout(() => {
          this.goBackHome();
        }, 1500);
      }
    } catch (error) {
      console.error('抽奖失败:', error);
      wx.hideLoading();
      
      // 显示错误提示
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
      
      // 延迟返回首页
      setTimeout(() => {
        this.goBackHome();
      }, 1500);
    }
  },



  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    // 设置页面导航栏返回按钮的行为
    wx.setNavigationBarTitle({
      title: '抽盲盒中'
    });
  },
  
  /**
   * 自定义返回首页的方法
   */
  goBackHome: function() {
    wx.switchTab({
      url: '../index/index'
    });
  },
  

  
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {
    // 清理定时器
    if (this.data.animationTimer) {
      clearTimeout(this.data.animationTimer);
    }
    
    // 手动控制页面栈，只保留首页
    const pages = getCurrentPages();
    if (pages.length > 1) {
      // 返回到首页，关闭当前页面
      wx.switchTab({
        url: '../index/index',
        success: function() {
          // 清除页面栈中除首页外的所有页面
          wx.navigateBack({ delta: pages.length - 1 });
        }
      });
    }
  }
})